package com.molichuxing.services.business.service;

import com.molichuxing.framework.dto.Paged;
import com.molichuxing.services.business.dto.response.VehicleBizDto;
import com.molichuxing.services.business.dto.response.VehicleInfoBizDto;
import com.molichuxing.services.business.dto.response.VehicleModlemakeBizDto;
import com.molichuxing.services.business.dto.response.VehicleNameBizDto;
import com.molichuxing.services.infrastructure.dto.response.VehicleMakeDto;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 车型信息服务类
 * </p>
 *
 * @author
 * @since 2019-07-29
 */
public interface VehicleBizService {

    /***
     * 根据车型id获取车型名称和图片
     *
     * @param vehicleModelId
     * @return
     */
    VehicleBizDto getVehicleBusBean(Integer vehicleModelId);

    String getVehicleName(Integer vehicleModelId);

    Map<Integer, String> getVehicleFullName(List<Integer> vehicleModelIds);

    Map<Integer, VehicleNameBizDto> getCarByModelNameList(List<Integer> vehicleModelIds);

    List<VehicleModlemakeBizDto> getVehicleModlemakeBizDto();

    List<VehicleModlemakeBizDto> getMaintenanceVehicleModlemakeBizDto(List<Integer> vehicleIdList);

    List<VehicleModlemakeBizDto> getVehicleModlemakeBizDto(List<Integer> vehicleIds);

    /**
     * 根据车型id查询
     *
     * @param vehicleModelId 车型id
     * @return
     */
    public VehicleNameBizDto getCarByModel(Integer vehicleModelId);

    /**
     * 根据车型名称查询
     *
     * @param vehicleModelName 车型名称
     * @return
     */
    public VehicleNameBizDto getCarByModelName(String vehicleModelName);

    /**
     * 根据车型id获取主品牌信息
     *
     * @param vehicleModelIds
     * @return
     */
    public List<VehicleMakeDto> getVehicleMakeByModleIds(List<Integer> vehicleModelIds);

    /**
     * 根据品牌id获取车型信息
     *
     * @param vehicleMakeId
     * @return
     */
    public List<VehicleBizDto> getVehicleListByMakeId(Integer vehicleMakeId);

    /**
     * 车型
     *
     * @param map
     * @param pageNum
     * @param pageSize
     * @return
     * @throws Exception
     */
    public Paged<VehicleInfoBizDto> getVehiclePage(Map<String, Object> map, Integer pageNum, Integer pageSize);

    /**
     * 详情
     *
     * @param id
     * @return
     */
    public VehicleInfoBizDto getVehicleInfo(Integer id);
    /**
     * 获取所有车型信息（包含车系、品牌）
     *
     * @return
     */
    List<VehicleNameBizDto> getAllVehicle();

}
